-- 996传奇自动化脚本
-- 主入口文件

-- 加载基础库
require "TSLib"
-- require("yyxlib")

-- 加载配置
local ConfigLoader = require("config.loader")
local Settings = require("config.settings")
local config = ConfigLoader.load(Settings.CURRENT_GAME)
local logger = require "utils.logger"
local stateManager = require "utils.state_manager"
local combat = require "modules.combat"
local movement = require "modules.movement"
local contract_map = require "tasks.contract_map"
local devil_valley = require "tasks.devil_valley"
local tower_climb = require "tasks.tower_climb"
local baiduai = require "utils.baidu_ocr"
local map = require "modules.map"
local ocrDict = require "utils.ts_ocr_dict"
local inventory = require "modules.inventory"
local snow_map_task = require "tasks_xiaogui.snow_map_task"
local multi_map_task = require "tasks.multi_map_task"
local maya_map_task = require "tasks_xiaogui.maya_map_task"
local sig_map_task = require "tasks.sig_map_task"
local thread = require "thread"


-- 初始化
local function initialize()
    logger.info("脚本初始化开始")
    init(1)
end

initialize()
-- thread.create(snow_map_task.run)
-- mSleep(8000)
-- sig_map_task.run('沙藏宝阁')
-- while true do
--     combat.attackEnemy()
--     mSleep(5000)
-- end

maya_map_task.run()


-- snow_map_task.run()


-- 启动异步线程
-- thread.create(snow_map_task.run)
-- mSleep(8000)
-- maya_map_task.run()


-- thread.create(snow_map_task.run)
-- mSleep(8000)
-- multi_map_task.run()

-- local map_cfg = config.BOSS_MAPS['死亡棺材']
--  -- 遍历bs的坐标
-- if map_cfg and map_cfg.BOSS_POSITIONS then
--     logger.info("打印BOSS位置信息")
--     for index, pos in ipairs(map_cfg.BOSS_POSITIONS) do
--         logger.info(string.format("BOSS位置 %d: (%d, %d)", index, pos[1], pos[2]))
--     end
-- else
--     logger.info("未找到BOSS位置信息")
-- end
-- if map_cfg and map_cfg.BOSS_POSITIONS then
--     for _, pos in ipairs(map_cfg.BOSS_POSITIONS) do
--         -- 查看bs是否已被击杀，添加最多20此循环
--         local retry_count1 = 0
--         -- 最多攻击10分钟获取时间
--         local kill_time = os.time() + 600
--         while not map.isBsDeadPicPosition(pos[1], pos[2]) and retry_count1 < 5 and kill_time > os.time() do
--             -- 飞到bs并击杀
--             if map.findBsAndGoto(pos[1], pos[2]) then
--                 logger.info(string.format("点击坐标：%d, %d", pos[1], pos[2]))
--                 -- 等待
--                 combat.startAutoAttack()
--                 mSleep(5000)
--             else
--                 retry_count1 = retry_count1 + 1
--                 mSleep(2000)
--                 logger.warn(string.format("未移动到坐标：%d, %d", pos[1], pos[2]))
--             end
--         end
--     end
-- end



-- zhaobaobao_task.lightning()

-- tower_climb.run()
-- contract_map.run()
-- baiduai.testBaiduOCR()
-- 启动脚本
-- start()


-- 错误处理
local function errorHandler(err)
    logger.error("脚本运行出错", "错误信息:" .. tostring(err) .. "\n堆栈跟踪:" .. debug.traceback())

    -- 尝试恢复到安全状态
    stateManager.setState(stateManager.States.IDLE)
    -- 由于 combat 是未定义的全局变量，暂时注释掉该调用
    -- combat.stopAutoAttack()

    -- 保存当前状态
    -- TODO: 实现状态保存功能

    return false
end


local function test001()
    init(0)
    local point = findMultiColorInRegionFuzzyExt(0x100708, "1|0|0x100708,1|1|0xdf0701,0|1|0xc80802", 88, 290, 513, 727,
        972, { orient = 2, main = 0x202020, list = 0x202020 })
    if #point ~= 0 then
        logger.info("找到目标", #point)
        for i, v in ipairs(point) do
            logger.info(string.format("坐标%d x:%d y:%d", i, v.x, v.y))
            logger.info(string.format("坐标x:%d y:%d 颜色::0x%X", v.x, v.y, getColor(v.x, v.y)))
            logger.info(string.format("坐标x:%d y:%d 颜色::0x%X", v.x + 1, v.y, getColor(v.x + 1, v.y)))
            logger.info(string.format("坐标x:%d y:%d 颜色::0x%X", v.x, v.y + 1, getColor(v.x, v.y + 1)))
            logger.info(string.format("坐标x:%d y:%d 颜色::0x%X", v.x + 1, v.y + 1, getColor(v.x + 1, v.y + 1)))
            mSleep(50)
        end
    else
        logger.info("未找到目标")
    end
end
